﻿using System;
using System.ServiceModel.Dispatcher;
using Sripirom.ATS.Model.ServiceLog;
using Sripirom.ATS.Services.API.Inquiry.Messages;

namespace Sripirom.ATS.Services.OperationDispatchers
{
    public class InquiryDecisionInvoker : AbsOperationInvoker<InquiryDecisionRequest, 
        InquiryDecisionResponse, InquiryDecisionData>,
        IOperationInvoker
    {
        public InquiryDecisionInvoker(IOperationInvoker baseInvoker, DispatchOperation operation)
            :base(baseInvoker, operation)
        {

        }
        protected override ServiceActivityLog ValidateMessage(InquiryDecisionData operationData)
        {

            return operationData.CreateActivityLog(ActivityStatus.ValidateMessage, ServiceStatus.SC);
        }

        protected override ServiceActivityLog BuildInstruction(InquiryDecisionData operationData)
        {

            return operationData.CreateActivityLog(ActivityStatus.BuildInstruction, ServiceStatus.SC);
        }

        protected override ServiceActivityLog ValidateTransaction(InquiryDecisionData operationData)
        {

            return operationData.CreateActivityLog(ActivityStatus.ValidateTransaction, ServiceStatus.SC);
        }

        protected override ServiceActivityLog BuildCommand(InquiryDecisionData operationData)
        {

            return operationData.CreateActivityLog(ActivityStatus.BuildCommand, ServiceStatus.SC);
        }

        protected override ServiceActivityLog ProcessTransaction(InquiryDecisionData operationData)
        {

            return operationData.CreateActivityLog(ActivityStatus.ProcessTransaction, ServiceStatus.SC);
        }
    }
}
                                        